Sets our main struct and passes it to the parent class.
Parses an absolute URI.
Parses @uri_string relative to @base.
Copies @uri
Makes a copy of @uri, considering only the protocol, host, and port
Tests whether or not @uri1 and @uri2 are equal in all parts
Frees @uri.
Gets @uri's fragment.
Gets @uri's host.
Gets @uri's password.
Gets @uri's path.
Gets @uri's port.
Gets @uri's query.
Gets @uri's scheme.
the main Gtk struct as a void*
Get the main Gtk struct
Gets @uri's user.
Compares @v1 and @v2, considering only the scheme, host, and port.
Hashes @key, considering only the scheme, host, and port.
Sets @uri's fragment to @fragment.
Sets @uri's host to @host.
Sets @uri's password to @password.
Sets @uri's path to @path.
Sets @uri's port to @port. If @port is 0, @uri will not have an explicitly-specified port.
Sets @uri's query to @query.
Sets @uri's query to the result of encoding @form according to the HTML form rules. See soup_form_encode_hash() for more information.
Sets @uri's scheme to @scheme. This will also set @uri's port to the default port for @scheme, if known.
Sets @uri's user to @user.
Returns a string representing @uri.
Tests if @uri uses the default port for its scheme. (Eg, 80 for http.) (This only works for http, https and ftp; libsoup does not know the default ports of other protocols.)
a fragment identifier within @path, or %NULL
the hostname or IP address, or %NULL
a password, or %NULL
the path on @host
the port number on @host
a query for @path, or %NULL
the URI scheme (eg, "http")
a username, or %NULL
Fully %<!-- -->-decodes @part.
This %<!-- -->-encodes the given URI part and returns the escaped version in allocated memory, which the caller must free when it is done.
%<!-- -->-decodes any "unreserved" characters (or characters in @unescape_extra) in @part, and %<!-- -->-encodes any non-ASCII characters, spaces, and non-printing characters in @part.
A #SoupURI represents a (parsed) URI. #SoupURI supports RFC 3986 (URI Generic Syntax), and can parse any valid URI. However, libsoup only uses "http" and "https" URIs internally; You can use SOUP_URI_VALID_FOR_HTTP() to test if a #SoupURI is a valid HTTP URI.
@scheme will always be set in any URI. It is an interned string and is always all lowercase. (If you parse a URI with a non-lowercase scheme, it will be converted to lowercase.) The macros %SOUP_URI_SCHEME_HTTP and %SOUP_URI_SCHEME_HTTPS provide the interned values for "http" and "https" and can be compared against URI @scheme values.
@user and @password are parsed as defined in the older URI specs (ie, separated by a colon; RFC 3986 only talks about a single "userinfo" field). Note that @password is not included in the output of soup_uri_to_string(). libsoup does not normally use these fields; authentication is handled via #SoupSession signals.
@host contains the hostname, and @port the port specified in the URI. If the URI doesn't contain a hostname, @host will be %NULL, and if it doesn't specify a port, @port may be 0. However, for "http" and "https" URIs, @host is guaranteed to be non-%NULL (trying to parse an http URI with no @host will return %NULL), and @port will always be non-0 (because libsoup knows the default value to use when it is not specified in the URI).
@path is always non-%NULL. For http/https URIs, @path will never be an empty string either; if the input URI has no path, the parsed #SoupURI will have a @path of "/".
@query and @fragment are optional for all URI types. soup_form_decode() may be useful for parsing @query.
Note that @path, @query, and @fragment may contain %<!-- -->-encoded characters. soup_uri_new() calls soup_uri_normalize() on them, but not soup_uri_decode(). This is necessary to ensure that soup_uri_to_string() will generate a URI that has exactly the same meaning as the original. (In theory, #SoupURI should leave @user, @password, and @host partially-encoded as well, but this would be more annoying than useful.)